package com.yuanfengPlus.utils;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class PasswordUtil {

    /**
     * 对密码进行MD5加密
     * @param password 明文密码
     * @return 加密后的密码
     */
    public static String encryptPassword(String password) {
        try {
            // 获取MD5 MessageDigest 实例
            MessageDigest md = MessageDigest.getInstance("MD5");
            // 计算MD5值
            md.update(password.getBytes());
            // 获取加密后的字节数组
            byte[] bytes = md.digest();
            // 将字节数组转换为十六进制字符串
            BigInteger number = new BigInteger(1, bytes);
            String md5Str = number.toString(16);
            // 补齐32位
            while (md5Str.length() < 32) {
                md5Str = "0" + md5Str;
            }
            return md5Str;
        } catch (NoSuchAlgorithmException e) {
            throw new RuntimeException("MD5加密算法不存在", e);
        }
    }

    /**
     * 比较两个密码是否相等（考虑到数据库中可能存储的是加盐密码）
     * @param inputPassword 用户输入的密码
     * @param storedPassword 数据库中存储的密码
     * @return 密码是否匹配
     */
    public static boolean comparePasswords(String inputPassword, String storedPassword) {
        // 假设数据库中的密码是加密的，这里将用户输入的密码也加上相同的盐进行加密
        String encryptedInputPassword = encryptPassword(inputPassword + "yuanfeng");
        return encryptedInputPassword.equals(storedPassword);
    }
}
